package com.example.controller;

import com.example.anno.Log;
import com.example.pojo.Dept;
import com.example.pojo.Result;
import com.example.service.DeptService;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Delete;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Slf4j//记录日志
@RestController  //方法返回值会以json和XML形式写入HTTP
public class DeptController {
    // @RequestMapping(value = "/depts",method = RequestMethod.GET)
    @Autowired//自动注入
    private DeptService deptService;//因为controller需要service，所以需要注入

    @GetMapping("/depts")//指定请求方式为GET
    //查询部门信息
    public Result list() {//查询全部部门
        log.info("查询全部部门数据");//日志检验
        //调用service查询部门数据
        List<Dept> deptList = deptService.list();
        return Result.success(deptList);
    }

    @Log
    @DeleteMapping("/depts/{id}")
    //@PathVariable 注解允许你将这些变量{id}提取出来，并将其作为方法参数传递给控制器方法
    public Result delete(@PathVariable Integer id) {//删除部门
        log.info("删除部门数据，id为{}", id);
        ;
        deptService.listDelete(id);
        return Result.success();
    }

    @Log
    @PostMapping("/depts")//指定请求方式为POST
    public Result add(@RequestBody Dept dept) {
        log.info("添加部门数据，部门信息为{}", dept);
        deptService.insert(dept);
        return Result.success();
    }

    @GetMapping("/depts/{id}")
    public Result get(@PathVariable Integer id) {//根据id查询部门
        var deptList = deptService.selectById(id);
        return Result.success(deptList);
    }

    @Log
    @PutMapping("/depts")

    public Result update(@RequestBody Dept dept) {//修改部门
         deptService.update(dept);
        return Result.success();
    }
}
